# 第2章 变量与简单数据类型
import bean.const as const

# 变量的命名和使用
message = "Hello world"
print(message)

print()

# 2.3 字符串
# 双引号和单引号都可以使用, 随意嵌套
"Hello, 'World'"

# 2.3.1 大小写转换 —— upper()、lower()、title()
name = "python"
print(name.title())  # Python
print(name.upper())  # PYTHON
new_name = "JAVA"
print(new_name.lower())  # java

print()

# 2.3.2 在字符串中使用变量——使用 f"..."
first_name = 'Kar'
last_name = 'Deng'
full_name = f"{first_name} {last_name}"
print(full_name)
# 或着使用逗号分隔
print(first_name, last_name)

print()

# 2.3.3 制表符换行符 \t 和 \n
print("hello\tworld\nI'm Kar")

print()

# 2.3.4 删除空白
msg = "  Hello World   \t \n"
print(msg.rstrip())
print(msg.lstrip())
print(msg.strip())

# 2.4 数
print("\n\n###### 2.4 数 ########\n\n")
# 2.4.1 整数
print(2 + 3)
print(2 - 3)
print(2 * 3)  # 自动转为浮点数结果
print(2 / 3)
print(2**3)  # 2的3次幂

print("\n")

# 2.4.2 浮点数
# 包含的小数位可能是不确定的
print(0.1 + 0.2)
print(3 * 0.1)
# 输出 0.30000000000000004

print("\n")

# 2.4.3 整数和浮点数
# 1、任意两个数相除结果都是浮点数
# 2、操作数是浮点数的结果也是浮点数
print(4 / 2)
print(1 + 2.0)

print("\n")

# 正无穷
print(float("inf"))  # inf
print(float("inf") + 1)  # inf
# 负无穷
print(float("-inf"))  # -inf
print(float("-inf") + 1)  # -inf

print(float('inf') + float('-inf'))  # nan

print()

# 2.4.4 数中的下划线 —— 清晰易读
universe_age = 14_000_000_000
print(universe_age)

print("\n")

# 2.4.5 多个变量同时赋值
x, y, z = 1, 2, 3
print(f"x: {x}, y: {y}, z: {z}")

print("\n")

# 2.4.6 常量
MAX_CONNECTION = 500
# 大写的变量不具有常量约束，可以通过以下自定义类实现常量
MAX_CONNECTION = 400
print(MAX_CONNECTION)

# 通过自定义类实现常量
# import bean.const as const

const.PI = 3.14
print(const.PI)
# 常量一旦定义后无法再修改
# const.PI=3.15
print(const.PI)
